iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 26
1
自我挑戰組

微程式語言白話文運動系列 第 26

微聊 JavaScript Promise

  • 分享至 

  • xImage
  •  

JavaScript Promise 是什麼呢?

聊聊我們這幾天微人用了3個套件分別來實現資料抓取,但其實在這些方法裡面都會使用到 Promise,而 Promise 本身是用來改善 JavaScript 非同步的語法結構。
先說明一下,因為 JavaScript 是屬於同步的程式語言,一次僅能做一件事情,但遇到非同步的事件時,就會將非同步的事件移動到程式碼的最後方,等到所有的原始碼運行完以後才會執行非同步的事件。
我們先來簡單看一下如果不非同步會變什麼樣,先看看底下就是原本沒有使用非同步時,先從 wake up 開始 就會跳到右邊執行 function, 但 function 後面又接續還有下一層要執行,因此,會一直走到最深層 goToSchool 才開始執行,沒錯,這就是 callback hell ,除了程式碼寫得不好看之外,還會造成處理程序作業會相當的不順暢,而且碰到某一段出現錯誤時就會停在那段程式無法往前囉!
callback hell
詳細看這裡

再舉個簡單的例子來說,當我們去便利商店結帳,如果我們要取宅配、點咖啡、繳帳單,如果店員一次只能點咖啡做咖啡,然後在結帳,再回頭繳帳單...等。這樣的狀況就會卡在都在等待做咖啡這個程序當中,非同步的狀況就是在這情境當中,可以先把咖啡點好並可以按咖下咖啡機的鈕,然後回來做繳帳單取宅配,並一起結帳後再回來把咖啡拿出來,這樣的狀況相對的有效率,Promise 就是在這個時候幫上很大的忙囉。
nice

今天就先聊到這囉!明天見,掰餔。


上一篇
微聊 簡單做個 API 使用 axios
下一篇
微聊 Promise 試做一回
系列文
微程式語言白話文運動30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言